package eraikikon;

 import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Vector;

public class Kudeatzailea {

	private ArrayList<Profila> _profilak ;
	private ArrayList<Gertakari> gertakariak ;
		
	
	
	public Kudeatzailea(ArrayList<Profila> _profilak, ArrayList<Gertakari> gertakariak) {
		if (_profilak != null)
		   this._profilak = _profilak;
		else
			this._profilak = new ArrayList<Profila>();
		
		if (gertakariak != null)
			this.gertakariak = gertakariak;
		else
			this.gertakariak = new ArrayList<Gertakari>();	
				
	}

	public Vector<Erabiltzaile> getIrakasleak(){
		// Emaitza: ERAIKIkoneko irakasle taula bat
		// TODO: Bektorea itzuli beharrean... ba al dago beste erarik?
		
		Vector<Erabiltzaile> _erantzuna = null;
		
		for (Profila prof : _profilak) {
			if ( prof.getMota().compareTo("Irakasleak") == 0) {
				_erantzuna = prof.getErabiltzaileak();
				// behin aurkitu eta gero, ez dugu beste irakasle profil ezberdinik aurkituko				
				break;
			}
		}
		
		return _erantzuna;
	}

	public TxartelIrakurgailua getTxartelIrakurgailua(SarbideEskaera se){
		return se.getTxartelIrakurgailua();
	}
	public Txartela getTxartel2Urte(Erabiltzaile erabiltzaile){
		Txartela _txartela = erabiltzaile.getTxartela();
		Date gaituData = _txartela.getGaituData();
		
		// kalkulatu orain dela bi urteko data
		Calendar biurte = new GregorianCalendar();
		biurte.setTime(new Date());
		biurte.add(Calendar.YEAR, -2);
		
		// erabiltzailearen txartela bi urte baino gehiago baditu
		// txartel hori itzuli. Ezezkoan, null itzuli.
		
		if (gaituData.before(biurte.getTime())){
			return _txartela;
		}else{
			return null;
		}
	}
	
	// TODO: ausnartu ea getSarbideEskaerak baino izen egokiagoa izan daitekeen..
	// Argibidea: ez ditu SarbideEskaerak bueltatzen soilik
	// baizik eta AzkenHilabete honetan ezeztatutako SarbideEskaerak
	
	public Vector<SarbideEskaera> getSarbideEskaerak(Txartela txartela){
	
		Vector<SarbideEskaera> eskaerak;
		Vector<SarbideEskaera> erantzuna = new Vector<SarbideEskaera>();
		
		eskaerak = txartela.getSarbideEskaerak();
		
		//	kalkulatu orain dela hilabete bateko data
		Calendar hilabetebat = new GregorianCalendar();
		hilabetebat.setTime(new Date());
		hilabetebat.add(Calendar.MONTH, -1);
		
		
		for(SarbideEskaera eskaera : eskaerak){
			// azken hilabete honetan sarbide eskaerarik izan al du?
			Date eskaera_data = eskaera.getData();
			if ( eskaera_data.after(hilabetebat.getTime()) ){
				// baimendu gabeko sarbide eskaera zen?
				if ( ! eskaera.isBaimenduta()){
					erantzuna.add(eskaera);
				}
				
			}
		}
		return erantzuna;
	}

	public void createGertakaria(int txartelId, Integer txartelIrakId, String mota) {

		// TODO: gertakarien taula dinamikoaren erreferentzia Kudeatzaileak izan behar du?
		gertakariak.add(new Gertakari(txartelId,txartelIrakId,mota));
		
	}
	
}
